A variety of software applications allow users to draw in a user interface to, for example, supplement the main content being produced in an application or even to create the main content. One drawback to drawing in an application has been the difficulty of aligning shapes to each other. For instance, aligning two text boxes to each other in a presentation document or drawing a free form line can be a frustrating experience. Grid snapping, smart guides, and auto-align are some features that have been developed to assist with such tasks, but they all have shortcomings that relegate the user to a sub-optimal experience.
From a technical perspective, grid snapping forces the user to snap an object to a point on a grid, rather than giving the user the freedom to position an object anywhere on a canvas. Smart guides do not allow for snapping at an angle and are relatively slow. Auto-align may align objects with each other, but the user has almost no control over the actual look he or she may be trying to achieve.